var mongodb = require('./db');
var crypto = require('crypto');

function User(user) {
    this.name = user.name;
    this.password = user.password;
    this.email = user.email;
};

module.exports = User;

//   存储用户信息
User.prototype.save = function (callback) {
    var md5 = crypto.createHash('md5'),
        email_MD5 = md5.update(this.email.toLowerCase()).digest('hex'),
        head = "http://www.gravatar.com/avatar/" + email_MD5 + "?s=48";
    var user = {
        name: this.name,
        password: this.password,
        email: this.email
    };
//    打开数据库
    mongodb.open(function (err, db) {
        //连接数据库报错
        if (err) {
            //返回err信息
            return callback(err);
        }
        // 读取users 集合
        db.collection('users', function (err, collection) {
            if (err) {
                mongodb.close();
                return callback(err);
            }
            collection.insert(user, {
                safe: true
            }, function (err, user) {
                mongodb.close();
                if (err) {
                    /*错误，返回err信息*/
                    return callback(err);
                }
                //成功，err 为米null，并且返回存储后的用户文档
                callback(null, user[0]);
            });
        });
    });
};

/*读取用户信息*/
User.get = function (name, callback) {
    //打开数据库
    mongodb.open(function (err, db) {
        if (err) {
            //错误 返回错误信息
            return callback(err);
        }
        //读取 users 集合
        db.collection('users', function (err, collection) {
            if (err) {
                //关闭数据库连接
                mongodb.close();
                return callback(err);
            }
            // 查找用户名（name 键）值为 name 一个文档
            collection.findOne({
                name: name
            }, function (err, user) {
                mongodb.close();
                if (err) {
                    //查询 异常！  返回err 信息
                    return callback(err);
                }
                //查询成功！ 返回查询用户信息
                callback(null, user);
            });
        });
    });
};